package com.ts.api.module.product.service;

import com.ts.api.module.product.entity.po.ProductPO;
import com.ts.api.module.product.entity.po.ProductPlanPO;

/**
 *  主体计划类型业务层
 *
 *  @author Pan
 */
public interface ProductPlanTypeService {

    /**
     *  是否本地主体
     *
     *  @param  productPO       主体实体类
     *  @return boolean
     */
    boolean hasLocalProduct(ProductPO productPO);

    /**
     *  是否为机构计划
     *
     *  @param  productPlanPO   计划实体类
     *  @return boolean
     */
    boolean hasOrgPlan(ProductPlanPO productPlanPO);

    /**
     *  是否为本地CRM机构计划
     *
     *  @param  productPO       主体实体类
     *  @param  productPlanPO   计划实体类
     *  @return boolean
     */
    boolean hasLocalOrgPlan(ProductPO productPO, ProductPlanPO productPlanPO);

    /**
     *  是否为API机构计划
     *
     *  @param  productPO       主体实体类
     *  @param  productPlanPO   计划实体类
     *  @return boolean
     */
    boolean hasApiOrgPlan(ProductPO productPO, ProductPlanPO productPlanPO);

    /**
     *  是否为特殊计划
     *
     *  @param  productPlanPO   计划实体类
     *  @return boolean
     */
    boolean hasSpecialPlan(ProductPlanPO productPlanPO);

    /**
     *  是否为特殊计划中的本地CRM机构计划
     *
     *  @param  productPO       主体实体类
     *  @param  productPlanPO   计划实体类
     *  @return boolean
     */
    boolean hasLocalSpecialPlan(ProductPO productPO, ProductPlanPO productPlanPO);

    /**
     *  是否为API特殊计划
     *
     *  @param  productPO       主体实体类
     *  @param  productPlanPO   计划实体类
     *  @return boolean
     */
    boolean hasApiSpecialPlan(ProductPO productPO, ProductPlanPO productPlanPO);

    /**
     *  是否为平台计划
     *
     *  @param  productPlanPO   计划实体类
     *  @return boolean
     */
    boolean hasPlatformPlan(ProductPlanPO productPlanPO);

    /**
     *  平台计划是否为分润模式
     *
     *  @param  productPlanPO   计划实体类
     *  @return boolean
     */
    boolean hasPlatShare(ProductPlanPO productPlanPO);

    /**
     *  平台计划，是否我方对接文档
     *
     *  @param  productPlanPO   计划实体类
     *  @return boolean
     */
    boolean hasPlatWeProvider(ProductPlanPO productPlanPO);

    /**
     *  平台计划，是否对方对接文档
     *
     *  @param  productPlanPO   计划实体类
     *  @return boolean
     */
    boolean hasPlatOtherProvider(ProductPlanPO productPlanPO);
}
